package com.lanchetech.user.service;


import com.lanchetech.bean.request.PageReq;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.vo.*;
import com.lanchetech.entity.*;

import java.math.BigDecimal;
import java.util.List;

public interface FarmService {

    ResultData<BasePageResp<Mailbox>> getMailBoxPage(PageReq req);

    ResultData<BasePageResp<FarmProduct>> getFarmProductPage(PageReq req);

    BaseResp exchangeFarmProduct(FarmOrder farmOrder);

    BaseResp exchangeTreeProduct(FarmOrder farmOrder);

    ResultData<BasePageResp<FarmOrderVO>> getMyExchangeProductPage(PageReq req);

    ResultData<FarmUserVO> getCowDetail(User user);

    BaseResp editCow(Cow cow);

    ResultData<FarmUserVO> getTreeDetail(User user);

    ResultData<TreeVO> getCurrentTreeDetail();

    BaseResp editTreeIsActive(Long treeId);

    BaseResp addTree(User user, Long saplingId);

    BaseResp giveUpTree(Long treeId);

    BaseResp eatGrass(BigDecimal grass);

    BaseResp milking(User user);

    ResultData<List<FarmUserRankVO>> getCowRank(User user);

    ResultData<List<Sapling>> getSaplingList(User user);

    BaseResp waterTree(Long treeId, BigDecimal water);

    ResultData<List<FarmUserRankVO>> getTreeRank(User user);

    BaseResp applyFertilizer(User user, BigDecimal fertilizer, Long treeId);

    ResultData<BasePageResp<FarmTaskVO>> getFarmTaskPage(PageReq req);

    BaseResp editUserTask(UserTask userTask);

    ResultData<BasePageResp<GrassFlowVO>> getGrassFlowPage(PageReq req);

    ResultData<BasePageResp<WaterFlowVO>> getWaterFlowPage(PageReq req);
}
